package com.huike.clues.service;

import com.huike.clues.domain.TbClue;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huike.clues.domain.dto.TbClueCreateDTO;
import com.huike.clues.domain.dto.TbClueDTO;
import com.huike.clues.domain.dto.TbRuleListDTO;
import com.huike.clues.domain.dto.TbUserGainClueDTO;
import com.huike.clues.domain.vo.FalseClueVo;
import com.huike.clues.domain.vo.PageClueVO;
import com.huike.common.core.page.TableDataInfo;

import java.util.List;

/**
 * @author 93238
 * @description 针对表【tb_clue(线索)】的数据库操作Service
 * @createDate 2023-10-12 06:35:46
 */
public interface TbClueService extends IService<TbClue> {

    /**
     * 新增线索
     */
    void createClue(TbClueCreateDTO dto);

    /**
     * 批量分配
     *
     * @param dto 传入批量分配的线索id集合以及分配给哪个用户的id
     */
    void assignment(TbUserGainClueDTO dto);

    /**
     * 设置当前线索为伪线索
     *
     * @param id          线索id
     * @param falseClueVo 原因和跟进记录
     */
    void falseClue(Long id, FalseClueVo falseClueVo);

    /**
     * 批量捞取
     *
     * @param dto 传入批量捞取的线索id集合以及分配给捞取用户的id
     */
    void gain(TbUserGainClueDTO dto);

    /**
     * 更新线索
     */
    void updateClue(TbClue clue);

    /**
     * 获取线索管理列表
     *
     * @param dto 查询条件
     * @return 返回线索集合
     */
    TableDataInfo<List<PageClueVO>> getPageClue(TbRuleListDTO dto);

    /**
     * 获取线索池
     *
     * @param dto 查询条件
     * @return 返回线索池
     */
    TableDataInfo<List<PageClueVO>> getCluePool(TbRuleListDTO dto);

    /**
     * 根据id获取线索信息
     *
     * @param id 线索id
     * @return 返回线索信息
     */
    PageClueVO getInfoById(Long id);

}
